/*
 * Powered By [Seven]
 * Since 2016 - 2019
 */


package com.czmh.etc.onlinepubsys.model;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
/**
 * 
 * @描述：
 * @author： Seven.
 * @版本：V1.0
 */
public class EtcWechatunifiedorder extends BaseModel {
	
	//alias
	public static final String TABLE_ALIAS = "EtcWechatunifiedorder";
	public static final String ALIAS_OUT_TRADE_NO = "商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*@ ，且在同一个商户号下唯一。详见商户订单号";
	public static final String ALIAS_APPID = "微信开放平台审核通过的应用APPID";
	public static final String ALIAS_MCH_ID = "微信支付分配的商户号";
	public static final String ALIAS_DEVICE_INFO = "终端设备号(门店号或收银设备ID)，默认请传WEB";
	public static final String ALIAS_NONCE_STR = "随机字符串，不长于32位。推荐随机数生成算法";
	public static final String ALIAS_SIGN = "签名，详见签名生成算法";
	public static final String ALIAS_SIGN_TYPE = "签名类型，目前支持HMAC-SHA256和MD5，默认为MD5";
	public static final String ALIAS_BODY = "商品描述交易字段格式根据不同的应用场景按照以下格式：             APP――需传入应用市场上的APP名字-实际商品名称，天天爱消除-游戏充值。";
	public static final String ALIAS_DETAIL = "商品详细描述，对于使用单品优惠的商户，改字段必须按照规范上传，详见“单品优惠参数说明”";
	public static final String ALIAS_ATTACH = "附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据";
	public static final String ALIAS_FEE_TYPE = "符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型             ";
	public static final String ALIAS_TOTAL_FEE = "订单总金额，单位为分，详见支付金额";
	public static final String ALIAS_SPBILL_CREATE_IP = "用户端实际ip";
	public static final String ALIAS_TIME_START = "订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则";
	public static final String ALIAS_TIME_EXPIRE = "订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则             注意：最短失效时间间隔必须大于5分钟";
	public static final String ALIAS_GOODS_TAG = "订单优惠标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠";
	public static final String ALIAS_NOTIFY_URL = "接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。";
	public static final String ALIAS_TRADE_TYPE = "支付类型";
	public static final String ALIAS_LIMIT_PAY = "no_credit--指定不能使用信用卡支付";
	public static final String ALIAS_SCENE_INFO = "该字段用于统一下单时上报场景信息，目前支持上报实际门店信息。";
	public static final String ALIAS_RETURN_CODE = "SUCCESS/FAIL             此字段是通信标识，非交易标识，交易是否成功需要查看result_code来判断";
	public static final String ALIAS_RETURN_MSG = "返回信息，如非空，为错误原因             签名失败             参数格式校验错误";
	public static final String ALIAS_RESULT_CODE = "SUCCESS/FAIL";
	public static final String ALIAS_ERR_CODE = "详细参见第6节错误列表";
	public static final String ALIAS_ERR_CODE_DES = "错误返回的信息描述";
	public static final String ALIAS_PREPAY_ID = "微信生成的预支付回话标识，用于后续接口调用中使用，该值有效期为2小时";
	public static final String ALIAS_PAYSTATUS = "微信统一下单的订单是否已经支付成功 0 = 未支付 1 = 支付成功 2 = 支付失败，对应m_wechatunifiedorderresult表的状态，此字段方便快速查询订单状态";
	public static final String ALIAS_USER_ID = "user_id";
	 
	//可以直接使用: @Length(max=50,message="用户名长度不能大于50")显示错误消息
	//columns START
	private String out_trade_no;
	private String appid;
	private String mch_id;
	private String device_info;
	private String nonce_str;
	private String sign;
	private String sign_type;
	private String body;
	private String detail;
	private String attach;
	private String fee_type;
	private Integer total_fee;
	private String spbill_create_ip;
	private String time_start;
	private String time_expire;
	private String goods_tag;
	private String notify_url;
	private String trade_type;
	private String limit_pay;
	private String scene_info;
	private String return_code;
	private String return_msg;
	private String result_code;
	private String err_code;
	private String err_code_des;
	private String prepay_id;
	private Integer paystatus;
	private String user_id;
	//columns END

	public EtcWechatunifiedorder(){
	}

	public EtcWechatunifiedorder(
		String out_trade_no
	){
		this.out_trade_no = out_trade_no;
	}

	/**  
	 * 设置商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*@ ，且在同一个商户号下唯一。详见商户订单号  
	 * @param out_trade_no 商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*@ ，且在同一个商户号下唯一。详见商户订单号  
	 */  
	public void setOut_trade_no(String out_trade_no) {
		this.out_trade_no = out_trade_no;
	}
	
	/**  
	 * 获取商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*@ ，且在同一个商户号下唯一。详见商户订单号   
	 * @return out_trade_no 商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*@ ，且在同一个商户号下唯一。详见商户订单号   
	 */
	public String getOut_trade_no() {
		return this.out_trade_no;
	}
	/**  
	 * 设置微信开放平台审核通过的应用APPID  
	 * @param appid 微信开放平台审核通过的应用APPID  
	 */  
	public void setAppid(String appid) {
		this.appid = appid;
	}
	
	/**  
	 * 获取微信开放平台审核通过的应用APPID   
	 * @return appid 微信开放平台审核通过的应用APPID   
	 */
	public String getAppid() {
		return this.appid;
	}
	/**  
	 * 设置微信支付分配的商户号  
	 * @param mch_id 微信支付分配的商户号  
	 */  
	public void setMch_id(String mch_id) {
		this.mch_id = mch_id;
	}
	
	/**  
	 * 获取微信支付分配的商户号   
	 * @return mch_id 微信支付分配的商户号   
	 */
	public String getMch_id() {
		return this.mch_id;
	}
	/**  
	 * 设置终端设备号(门店号或收银设备ID)，默认请传"WEB"  
	 * @param device_info 终端设备号(门店号或收银设备ID)，默认请传"WEB"  
	 */  
	public void setDevice_info(String device_info) {
		this.device_info = device_info;
	}
	
	/**  
	 * 获取终端设备号(门店号或收银设备ID)，默认请传"WEB"   
	 * @return device_info 终端设备号(门店号或收银设备ID)，默认请传"WEB"   
	 */
	public String getDevice_info() {
		return this.device_info;
	}
	/**  
	 * 设置随机字符串，不长于32位。推荐随机数生成算法  
	 * @param nonce_str 随机字符串，不长于32位。推荐随机数生成算法  
	 */  
	public void setNonce_str(String nonce_str) {
		this.nonce_str = nonce_str;
	}
	
	/**  
	 * 获取随机字符串，不长于32位。推荐随机数生成算法   
	 * @return nonce_str 随机字符串，不长于32位。推荐随机数生成算法   
	 */
	public String getNonce_str() {
		return this.nonce_str;
	}
	/**  
	 * 设置签名，详见签名生成算法  
	 * @param sign 签名，详见签名生成算法  
	 */  
	public void setSign(String sign) {
		this.sign = sign;
	}
	
	/**  
	 * 获取签名，详见签名生成算法   
	 * @return sign 签名，详见签名生成算法   
	 */
	public String getSign() {
		return this.sign;
	}
	/**  
	 * 设置签名类型，目前支持HMAC-SHA256和MD5，默认为MD5  
	 * @param sign_type 签名类型，目前支持HMAC-SHA256和MD5，默认为MD5  
	 */  
	public void setSign_type(String sign_type) {
		this.sign_type = sign_type;
	}
	
	/**  
	 * 获取签名类型，目前支持HMAC-SHA256和MD5，默认为MD5   
	 * @return sign_type 签名类型，目前支持HMAC-SHA256和MD5，默认为MD5   
	 */
	public String getSign_type() {
		return this.sign_type;
	}
	/**  
	 * 设置商品描述交易字段格式根据不同的应用场景按照以下格式：             APP――需传入应用市场上的APP名字-实际商品名称，天天爱消除-游戏充值。  
	 * @param body 商品描述交易字段格式根据不同的应用场景按照以下格式：             APP――需传入应用市场上的APP名字-实际商品名称，天天爱消除-游戏充值。  
	 */  
	public void setBody(String body) {
		this.body = body;
	}
	
	/**  
	 * 获取商品描述交易字段格式根据不同的应用场景按照以下格式：             APP――需传入应用市场上的APP名字-实际商品名称，天天爱消除-游戏充值。   
	 * @return body 商品描述交易字段格式根据不同的应用场景按照以下格式：             APP――需传入应用市场上的APP名字-实际商品名称，天天爱消除-游戏充值。   
	 */
	public String getBody() {
		return this.body;
	}
	/**  
	 * 设置商品详细描述，对于使用单品优惠的商户，改字段必须按照规范上传，详见“单品优惠参数说明”  
	 * @param detail 商品详细描述，对于使用单品优惠的商户，改字段必须按照规范上传，详见“单品优惠参数说明”  
	 */  
	public void setDetail(String detail) {
		this.detail = detail;
	}
	
	/**  
	 * 获取商品详细描述，对于使用单品优惠的商户，改字段必须按照规范上传，详见“单品优惠参数说明”   
	 * @return detail 商品详细描述，对于使用单品优惠的商户，改字段必须按照规范上传，详见“单品优惠参数说明”   
	 */
	public String getDetail() {
		return this.detail;
	}
	/**  
	 * 设置附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据  
	 * @param attach 附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据  
	 */  
	public void setAttach(String attach) {
		this.attach = attach;
	}
	
	/**  
	 * 获取附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据   
	 * @return attach 附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据   
	 */
	public String getAttach() {
		return this.attach;
	}
	/**  
	 * 设置符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型               
	 * @param fee_type 符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型               
	 */  
	public void setFee_type(String fee_type) {
		this.fee_type = fee_type;
	}
	
	/**  
	 * 获取符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型                
	 * @return fee_type 符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型                
	 */
	public String getFee_type() {
		return this.fee_type;
	}
	/**  
	 * 设置订单总金额，单位为分，详见支付金额  
	 * @param total_fee 订单总金额，单位为分，详见支付金额  
	 */  
	public void setTotal_fee(Integer total_fee) {
		this.total_fee = total_fee;
	}
	
	/**  
	 * 获取订单总金额，单位为分，详见支付金额   
	 * @return total_fee 订单总金额，单位为分，详见支付金额   
	 */
	public Integer getTotal_fee() {
		return this.total_fee;
	}
	/**  
	 * 设置用户端实际ip  
	 * @param spbill_create_ip 用户端实际ip  
	 */  
	public void setSpbill_create_ip(String spbill_create_ip) {
		this.spbill_create_ip = spbill_create_ip;
	}
	
	/**  
	 * 获取用户端实际ip   
	 * @return spbill_create_ip 用户端实际ip   
	 */
	public String getSpbill_create_ip() {
		return this.spbill_create_ip;
	}
	/**  
	 * 设置订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则  
	 * @param time_start 订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则  
	 */  
	public void setTime_start(String time_start) {
		this.time_start = time_start;
	}
	
	/**  
	 * 获取订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则   
	 * @return time_start 订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则   
	 */
	public String getTime_start() {
		return this.time_start;
	}
	/**  
	 * 设置订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则             注意：最短失效时间间隔必须大于5分钟  
	 * @param time_expire 订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则             注意：最短失效时间间隔必须大于5分钟  
	 */  
	public void setTime_expire(String time_expire) {
		this.time_expire = time_expire;
	}
	
	/**  
	 * 获取订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则             注意：最短失效时间间隔必须大于5分钟   
	 * @return time_expire 订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则             注意：最短失效时间间隔必须大于5分钟   
	 */
	public String getTime_expire() {
		return this.time_expire;
	}
	/**  
	 * 设置订单优惠标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠  
	 * @param goods_tag 订单优惠标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠  
	 */  
	public void setGoods_tag(String goods_tag) {
		this.goods_tag = goods_tag;
	}
	
	/**  
	 * 获取订单优惠标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠   
	 * @return goods_tag 订单优惠标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠   
	 */
	public String getGoods_tag() {
		return this.goods_tag;
	}
	/**  
	 * 设置接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。  
	 * @param notify_url 接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。  
	 */  
	public void setNotify_url(String notify_url) {
		this.notify_url = notify_url;
	}
	
	/**  
	 * 获取接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。   
	 * @return notify_url 接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。   
	 */
	public String getNotify_url() {
		return this.notify_url;
	}
	/**  
	 * 设置支付类型  
	 * @param trade_type 支付类型  
	 */  
	public void setTrade_type(String trade_type) {
		this.trade_type = trade_type;
	}
	
	/**  
	 * 获取支付类型   
	 * @return trade_type 支付类型   
	 */
	public String getTrade_type() {
		return this.trade_type;
	}
	/**  
	 * 设置no_credit--指定不能使用信用卡支付  
	 * @param limit_pay no_credit--指定不能使用信用卡支付  
	 */  
	public void setLimit_pay(String limit_pay) {
		this.limit_pay = limit_pay;
	}
	
	/**  
	 * 获取no_credit--指定不能使用信用卡支付   
	 * @return limit_pay no_credit--指定不能使用信用卡支付   
	 */
	public String getLimit_pay() {
		return this.limit_pay;
	}
	/**  
	 * 设置该字段用于统一下单时上报场景信息，目前支持上报实际门店信息。             {             "store_id": "", //门店唯一标识，选填，String(32)             "store_name":"”//门店名称，选填，String(64)               }  
	 * @param scene_info 该字段用于统一下单时上报场景信息，目前支持上报实际门店信息。             {             "store_id": "", //门店唯一标识，选填，String(32)             "store_name":"”//门店名称，选填，String(64)               }  
	 */  
	public void setScene_info(String scene_info) {
		this.scene_info = scene_info;
	}
	
	/**  
	 * 获取该字段用于统一下单时上报场景信息，目前支持上报实际门店信息。             {             "store_id": "", //门店唯一标识，选填，String(32)             "store_name":"”//门店名称，选填，String(64)               }   
	 * @return scene_info 该字段用于统一下单时上报场景信息，目前支持上报实际门店信息。             {             "store_id": "", //门店唯一标识，选填，String(32)             "store_name":"”//门店名称，选填，String(64)               }   
	 */
	public String getScene_info() {
		return this.scene_info;
	}
	/**  
	 * 设置SUCCESS/FAIL             此字段是通信标识，非交易标识，交易是否成功需要查看result_code来判断  
	 * @param return_code SUCCESS/FAIL             此字段是通信标识，非交易标识，交易是否成功需要查看result_code来判断  
	 */  
	public void setReturn_code(String return_code) {
		this.return_code = return_code;
	}
	
	/**  
	 * 获取SUCCESS/FAIL             此字段是通信标识，非交易标识，交易是否成功需要查看result_code来判断   
	 * @return return_code SUCCESS/FAIL             此字段是通信标识，非交易标识，交易是否成功需要查看result_code来判断   
	 */
	public String getReturn_code() {
		return this.return_code;
	}
	/**  
	 * 设置返回信息，如非空，为错误原因             签名失败             参数格式校验错误  
	 * @param return_msg 返回信息，如非空，为错误原因             签名失败             参数格式校验错误  
	 */  
	public void setReturn_msg(String return_msg) {
		this.return_msg = return_msg;
	}
	
	/**  
	 * 获取返回信息，如非空，为错误原因             签名失败             参数格式校验错误   
	 * @return return_msg 返回信息，如非空，为错误原因             签名失败             参数格式校验错误   
	 */
	public String getReturn_msg() {
		return this.return_msg;
	}
	/**  
	 * 设置SUCCESS/FAIL  
	 * @param result_code SUCCESS/FAIL  
	 */  
	public void setResult_code(String result_code) {
		this.result_code = result_code;
	}
	
	/**  
	 * 获取SUCCESS/FAIL   
	 * @return result_code SUCCESS/FAIL   
	 */
	public String getResult_code() {
		return this.result_code;
	}
	/**  
	 * 设置详细参见第6节错误列表  
	 * @param err_code 详细参见第6节错误列表  
	 */  
	public void setErr_code(String err_code) {
		this.err_code = err_code;
	}
	
	/**  
	 * 获取详细参见第6节错误列表   
	 * @return err_code 详细参见第6节错误列表   
	 */
	public String getErr_code() {
		return this.err_code;
	}
	/**  
	 * 设置错误返回的信息描述  
	 * @param err_code_des 错误返回的信息描述  
	 */  
	public void setErr_code_des(String err_code_des) {
		this.err_code_des = err_code_des;
	}
	
	/**  
	 * 获取错误返回的信息描述   
	 * @return err_code_des 错误返回的信息描述   
	 */
	public String getErr_code_des() {
		return this.err_code_des;
	}
	/**  
	 * 设置微信生成的预支付回话标识，用于后续接口调用中使用，该值有效期为2小时  
	 * @param prepay_id 微信生成的预支付回话标识，用于后续接口调用中使用，该值有效期为2小时  
	 */  
	public void setPrepay_id(String prepay_id) {
		this.prepay_id = prepay_id;
	}
	
	/**  
	 * 获取微信生成的预支付回话标识，用于后续接口调用中使用，该值有效期为2小时   
	 * @return prepay_id 微信生成的预支付回话标识，用于后续接口调用中使用，该值有效期为2小时   
	 */
	public String getPrepay_id() {
		return this.prepay_id;
	}
	/**  
	 * 设置微信统一下单的订单是否已经支付成功 0 = 未支付 1 = 支付成功 2 = 支付失败，对应m_wechatunifiedorderresult表的状态，此字段方便快速查询订单状态  
	 * @param paystatus 微信统一下单的订单是否已经支付成功 0 = 未支付 1 = 支付成功 2 = 支付失败，对应m_wechatunifiedorderresult表的状态，此字段方便快速查询订单状态  
	 */  
	public void setPaystatus(Integer paystatus) {
		this.paystatus = paystatus;
	}
	
	/**  
	 * 获取微信统一下单的订单是否已经支付成功 0 = 未支付 1 = 支付成功 2 = 支付失败，对应m_wechatunifiedorderresult表的状态，此字段方便快速查询订单状态   
	 * @return paystatus 微信统一下单的订单是否已经支付成功 0 = 未支付 1 = 支付成功 2 = 支付失败，对应m_wechatunifiedorderresult表的状态，此字段方便快速查询订单状态   
	 */
	public Integer getPaystatus() {
		return this.paystatus;
	}
	/**  
	 * 设置user_id  
	 * @param user_id user_id  
	 */  
	public void setUser_id(String user_id) {
		this.user_id = user_id;
	}
	
	/**  
	 * 获取user_id   
	 * @return user_id user_id   
	 */
	public String getUser_id() {
		return this.user_id;
	}

	@Override
    public String toString() {
		return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
			.append("out_trade_no",getOut_trade_no())
			.append("appid",getAppid())
			.append("mch_id",getMch_id())
			.append("device_info",getDevice_info())
			.append("nonce_str",getNonce_str())
			.append("sign",getSign())
			.append("sign_type",getSign_type())
			.append("body",getBody())
			.append("detail",getDetail())
			.append("attach",getAttach())
			.append("fee_type",getFee_type())
			.append("total_fee",getTotal_fee())
			.append("spbill_create_ip",getSpbill_create_ip())
			.append("time_start",getTime_start())
			.append("time_expire",getTime_expire())
			.append("goods_tag",getGoods_tag())
			.append("notify_url",getNotify_url())
			.append("trade_type",getTrade_type())
			.append("limit_pay",getLimit_pay())
			.append("scene_info",getScene_info())
			.append("return_code",getReturn_code())
			.append("return_msg",getReturn_msg())
			.append("result_code",getResult_code())
			.append("err_code",getErr_code())
			.append("err_code_des",getErr_code_des())
			.append("prepay_id",getPrepay_id())
			.append("paystatus",getPaystatus())
			.append("user_id",getUser_id())
			.toString();
	}
	
	@Override
    public int hashCode() {
		return new HashCodeBuilder()
			.append(getOut_trade_no())
			.toHashCode();
	}
	
	@Override
    public boolean equals(Object obj) {
		if(obj instanceof EtcWechatunifiedorder == false) {
			return false;
		}
		if(this == obj) {
			return true;
		}
		EtcWechatunifiedorder other = (EtcWechatunifiedorder)obj;
		return new EqualsBuilder()
			.append(getOut_trade_no(),other.getOut_trade_no())
			.isEquals();
	}
}

